1. Field of the Invention
The present invention relates to a wireless communications protocol. More specifically, the present invention discloses a method and system that properly triggers a polling operation for a transmitter to request a receiving status of a receiver.
2. Description of the Prior Art
Many communications protocols typically utilize a three-layered approach to communications. Please refer to FIG. 1. FIG. 1 is a block diagram of the three layers in such a communications protocol. In a typical wireless environment, a first station 10 is in wireless communications with one or more second stations 20. An application 13 on the first station 10 composes a message 11 and has it delivered to the second station 20 by handing the message 11 to a layer 3 interface 12. The layer 3 interface 12 may also generate layer 3 signaling messages 12a for the purpose of controlling layer 3 operations between the first station 10 and the second station 20. An example of such a layer 3 signaling message is a request for ciphering key changes, which are generated by the layer 3 interfaces 12 and 22 of both the first and the second stations, respectively. The layer 3 interface 12 delivers either the message 11 or the layer 3 signaling message 12a to a layer 2 interface 16 in the form of layer 2 service data units (SDUs) 14. The layer 2 SDUs 14 may be of any length. The layer 2 interface 16 composes the SDUs 14 into one or more layer 2 protocol data units (PDUs) 18. Each layer 2 PDU 18 is of a fixed length, and is delivered to a layer 1 interface 19. The layer 1 interface 19 is the physical layer, transmitting data to the second station 20. The transmitted data is received by the layer 1 interface 29 of the second station 20 and reconstructed into one or more PDUs 28, which are passed up to the layer 2 interface 26. The layer 2 interface 26 receives the PDUs 28 and from them assembles one or more layer 2 SDUs 24. The layer 2 SDUs 24 are passed up to the layer 3 interface 22. The layer 3 interface 22, in turn, converts the layer 2 SDUs 24 back into either a message 21, which should be identical to the original message 11 that was generated by the application 13 on the first station 10, or a layer 3 signaling message 22a, which should be identical to the original signaling message 12a generated by the layer 3 interface 12 and which is then processed by the layer 3 interface 22. The received message 21 is passed to an application 23 on the second station 20.
Of particular interest is the layer 2 interface, which acts as a buffer between the relatively high-end data transmission and reception requests of the applications, and the low-level requirements of the physical transmission and reception process. In the following, the term “PDU” is used to indicate layer 2 PDUs; the term “SDU” is used to indicate layer 2 SDUs. Please refer to FIG. 2. FIG. 2 is a diagram of a transmission/reception process from a layer 2 perspective. A layer 2 interface 32 of a transmitter 30, which may be either a base station or a mobile unit, receives a string of SDUs 34 from a layer 3 interface 33. The SDUs 34 are sequentially ordered from 1 to 5, and are of unequal lengths. The layer 2 interface 32 converts the string of SDUs 34 into a string of PDUs 36. The layer 2 PDUs 36 are sequentially ordered from 1 to 4, and are all of an equal length. The string of PDUs 36 is then sent off to the layer 1 interface 31 for transmission. A reverse process occurs at the receiver end 40, which may also be either a base station or a mobile unit, with a receiver layer 2 interface 42 assembling a received string of layer 2 PDUs 46 into a received string of layer 2 SDUs 44. Under certain transport modes, the multi-layered protocol insists that the receiver layer 2 interface 42 present the SDUs 44 to the layer 3 interface 43 in order. That is, the layer 2 interface 42 must present the SDUs 44 to the layer 3 interface 43 in the sequential order of the SDUs 44, beginning with SDU 1 and ending with SDU 5. The ordering of the SDUs 44 may not be scrambled, nor may a subsequent SDU be delivered to layer 3 until all of the prior SDUs have been delivered.
In line transmissions, such a requirement is relatively easy to fulfill. In the noisy environment of wireless transmissions, however, the receiver 40, be it a base station or a mobile unit, often misses data. Some layer 2 PDUs in the received string of PDUs 46 will therefore be missing. Thus, ensuring that the layer 2 SDUs 44 are presented in order can pose a significant challenge. Wireless protocols are carefully designed to address such problems. Generally speaking, there are two broad modes for transmitting and receiving data: acknowledged mode (AM) transport, and unacknowledged mode (UM) transport. For acknowledged mode data, the receiver 40 sends a special layer 2 acknowledging signal to the transmitter 30 to indicate successfully received layer 2 PDUs 46. No such signaling is performed for UM data. For purposes of the present invention, only acknowledged mode data is considered. Please refer to FIG. 3 with reference to FIG. 1. FIG. 3 is a simplified block diagram of an acknowledged mode data PDU 50, as defined in the 3GPP™ TS 25.322 specification, which is included herein by reference. In general, there are two types of PDUs: a control PDU or a data PDU. Control PDUs are used by the layer 2 interfaces 16 and 26 to control data transmission and reception protocols, such as the above-mentioned layer 2 acknowledging signal that is used to acknowledge received data. This is somewhat analogous to the exchange of the signaling messages 12a and 22a of the layer 3 interfaces 12 and 22. However, the layer 2 interfaces 16 and 26 do not interpret or recognize the layer 3 signaling messages 12a and 22a, whereas the layer 2 interfaces 16 and 26 do recognize layer 2 control PDUs, and do not hand layer 2 control PDUs up to the layer 3 interfaces 12 and 22. Data PDUs are used to transmit acknowledged mode data, which is then reassembled and presented to layer 3. The example PDU 50 is a data PDU, and is divided into several fields, as defined by the layer 2 protocol. The first field 51 is a single bit indicating that the PDU 50 is either a data or a control PDU. As the data/control bit 51 is set (i.e., equal to 1), the PDU 50 is marked as an acknowledged mode data PDU. The second field 52 is a sequence number field 52, and is twelve bits long. Successive PDUs 18, 28 have successively higher sequence numbers 52, and in this way the second station 20 can properly reassembled layer 2 PDUs 28 to form layer 2 SDUs 24. For example, if a first PDU 18 is transmitted with a sequence number 52 equal to 536, a sequentially next PDU 18 would be transmitted with a sequence number 52 equal to 537, and so forth. By assembling received data PDUs 50 in their proper sequential order according to their respective sequence numbers 52, the correct reconstruction of data is ensured. Note that the sequence number 52 enables re-transmitted PDUs 50 to be inserted into their proper sequential position with respect to other received PDUs 50. In this manner, the re-transmission of data is supported. A single polling bit 53 follows the sequence number field 52, and when set indicates that the receiver (i.e., the second station 20) should respond with an acknowledgment status PDU, which is one kind of control PDU, and which will be introduced later. The first station 10 sets the polling bit 53 to 1 to request the second station 20 to send an acknowledgment status control PDU. Bit 54 is reserved and is set to zero. The next bit 55a is an extension bit, and when set indicates the presence of a following length indicator (LI). An LI may be either 7 bits long or 15 bits long, and is used to indicate the ending position of a layer 2 SDU within the layer 2 PDU 50. If a single SDU completely fills the data region 58 of the PDU 50, then the bit 55a would be zero, thereby indicating that no LI is present. In the example PDU 50, however, there are two layer 2 SDUs ending in the layer 2 PDU 50: SDU_1 57a and SDU_2 57b. There must, therefore, be two LIs to indicate the respective ends of the SDU_1 57a and the SDU_2 57b. A PDU following the PDU 50 (i.e., sequentially after, as indicated by the sequence number 52) would hold the LI for SDU_3 57c. The first LI, LI1, is in field 56a following the extension bit field 55a, and marks the end of the SDU_1 57a. LI1 56a has an extension bit 55b that is set, indicating the presence of another LI, LI2 in field 56b. LI2 56b indicates the ending position of the SDU_2 57b, and has an extension bit 55c that is cleared, signifying that there are no more LIs, and that the data region 58 is thus beginning. The data region 58 is used to hold the actual SDU data.
Please refer to FIG. 4 with reference to FIG. 3. FIG. 4 is a simplified block diagram of a receiver 64 and a transmitter 65 in a wireless communications system 60. Both the receiver 64 and the transmitter 65 have windows within which they expect to receive the PDUs 50 and transmit the PDUs 50, respectively. The receiver 64 has a receiving window 61 that is delimited by two state variables: VR(R) 62, and VR(MR) 63. VR(R) 62 marks the beginning of the receiving window 61, and VR(MR) 63 marks the end of the receiving window 61. The receiver 64 will only accept PDUs 50 that have sequence numbers 52 that are sequentially on or after VR(R) 62 and sequentially before VR(MR) 63. The sequence number value held in VR(MR) 63 is not considered to be within the receiving window 61. Similarly, the transmitter 65 has a transmitting window 66 that is delimited by two state variables: VT(A) 67 and VT(MS) 68. VT(A) 67 marks the beginning of the transmitting window 66, and VT(MS) 68 marks the end of the transmitting window 66. The transmitter 65 will only transmit PDUs 50 that have sequence numbers 52 that are within the range of the transmitting window 66, i.e., that are sequentially on or after VT(A) 67, and sequentially before VT(MS) 68.
The receiving window 61 has a fixed receiving window size. The receiving window size is simply the number of sequence number values spanned by the state variables VR(R) 62 and VR(MR) 63. That is, VR(MR) 63 is always kept a fixed sequence number value distance away from VR(R) 62, which may be represented mathematically as:VR(MR)=VR(R)+receiving window size  (1)
Note that, as the sequence number 52 is a 12-bit number, equation (1) is a true 12-bit addition, and thus will suffer from rollover on overflow. Consequently, VR(MR) 63 does not always contain a value that is numerically larger than VR(R) 62. Similarly, the transmitting window 66 has a transmitting window size state variable VT(WS) 66a, which indicates the number of sequence number values spanned by the state variables VT(A) 67 and VT(MS) 68. The state variable VT(WS) 66a has an initial value that is set to a configured transmitting window size, which is supplied by layer 3. As above, this may be represented mathematically as:VT(MS)=VT(A)+VT(WS)  (2)
And again, the result from equation (2) may suffer from rollover due to overflow. The receiver 64 may explicitly request the transmitter 65 to change the value of VT (WS) 66a. The requested value of VT(WS) 66a, however, cannot be greater than the originally configured transmitting window size, i.e., the size indicated by the transmitter's layer 3.
As the receiver 64 receives PDUs 50 from the transmitter 65, the receiver 64 will update that value of the state variable VR(R) 62 to reflect the sequentially earliest sequence number 52 before which all preceding PDUs 50 have been successfully received. Put another way, VR(R) 62 always holds the sequence number 52 of the sequentially earliest PDU 50 that the receiver 64 is waiting to receive. Upon the successful reception of this PDU 50, the receiver 64 advances the state variable VR(R) 62 to the sequence number value 52 of the next PDU 50 that needs to be received, and the state variable VR(MR) 63 is updated using equation (1) accordingly. In this manner, the receiving window 61 is advanced by the receiver 64 as the PDUs 50 stream in from the transmitter 65. It should also be noted that the transmitter 65 may explicitly request the receiver 64 to advance the receiving window 61 with a layer 2 signaling PDU, but this has no bearing on the present invention.
The transmitting window 66 is advanced when the transmitter 65 receives a layer 2 acknowledgment status PDU from the receiver 64. The layer 2 acknowledgment status PDU holds the most current value of the state variable VR(R) 62, and is sent at periodic intervals by the receiver 24, or in response to an explicit request from the transmitter 65. The acknowledgement status PDU may also indicate PDUs within the receiving window 61 that are known to have been missed (because, for example, sequentially later PDUs have already been received) and which must consequently be re-transmitted. The transmitter 65 will then set the state variable VT(A) 67 equal to the value held in the acknowledgment status PDU, which in effect sets VT(A) 67 equal to VR(R) 62. The transmitter 65 updates the state variable VT(MS) 68 using equation (2) accordingly. In this manner, the transmitting window 66 and the receiving window 61 move forward with each other in lock step, with the transmitting window 66 tending to lag just a bit behind the receiving window 61.
The transmitter 65 has an additional state variable VT(S) 69. When the transmitter 65 begins transmitting the PDUs 50 that lie within the transmitting window 66, the transmitter 65 begins with a PDU 50 having a sequence number 52 given by the state variable VT(A) 67, and works sequentially forward until it reaches a PDU 50 having a sequence number 52 that is just prior to VT(MS) 68. That is, the transmitter 65 transmits the PDUs 50 in sequence, beginning at VT(A) 67 and ending at VT(MS) 1. The state variable VT(S) 69 holds the sequence number 52 of the next PDU 50 to be transmitted. Thus, the PDUs 50 with sequence numbers 52 on or sequentially after VT (A) 67, and on or sequentially before VT(S)-1 have been transmitted at least one time, and are stored in a retransmission buffer 66b until they are acknowledged by the receiver 64 by way of an acknowledgment status PDU. Note that if a PDU 50 with a sequence number 52 equal to VT(A) 67 is acknowledged, VT(A) 67 is updated to the next sequentially earliest sequence number value within the retransmission buffer 66b. PDUs 50 with sequence numbers 52 on or after VT(S) 69 have not yet been transmitted by the transmitter 69.
To insure that the transmitting window 66 advances, the transmitter 65 must, at intervals, request the receiver 64 to send an acknowledgment status PDU. This is termed polling, and is implemented by way of the polling bit 53. When the transmitter 65 determines that it is time to poll the receiver 64, the transmitter 65 will send the next outgoing PDU 50, i.e., the PDU 50 indicated by the state variable VT(S) 69, or a PDU 50 in the retransmission buffer 66b, with the polling bit 53 set to one. Upon reception of any PDU 50 with the polling bit 53 set, the receiver 64 responds by sending an acknowledgment status PDU. The acknowledgment status PDU will contain the most recent value of the state variable VR(R) 62, which the transmitter 65 will subsequently use for the state variable VT(A) 67 to advance the transmitting window 66. Various methods may be used by the transmitter 65 to determine when to poll the receiver 64. The transmitter 65 may, for example, use timer-based polling, in which polling is performed at regular, periodic intervals. Alternatively, the transmitter 65 may use window-based polling, in which the transmitter 65 polls the receiver 64 when a certain percentage of the transmitting window 66 has been transmitted.
For window-based polling, a polling function that utilizes VT(S) 69 is used to obtain a polling test value “t”:t=PollingFunction(VT(S))  (3)
A polling value is given, which is simply a percentage of the transmitting window 66 that has been sent at least once. For example, one may set the polling value to 60%, indicating that polling is to be performed if 60% or more of the transmitting window 66 has been sent at least once. Polling is triggered if “t” from the above equation (3) exceeds the polling value. When polling is triggered due to “t”, the polling bit 53 is set for the next outgoing PDU 50. Triggering polling by setting the polling bit 53 does not tie up any radio resources, as the polling bit 53 is always transmitted anyway, regardless of whether it is set or cleared. However, responding to the polling bit 53 by way of the acknowledgement status PDU does tie up radio resources. Hence, the polling bit 53 should not be set capriciously.
However, after VT(S) 69 has reached a sufficiently advanced value with respect to VT(A) 67 such that polling is triggered, for those cases that VT(A) 67 has not advanced, any re-transmitted PDU in the retransmission buffer 66b will trigger a poll because the state variables VT(S) 69 and VT(WS) 66a have not changed. This kind of triggering of polling can lead to degradation of the efficient utilization of radio resources (to the subsequent acknowledgement status PDUs in response to the set polling bit 53), and is therefore undesired. Additionally, the exact timing of the updating of the state variable VT(S) 69 can be somewhat ambiguous. For some implementations, VT(S) 69 is updated (i.e., incremented) when the associated PDU 50 is constructed. In other implementations, VT(S) 69 is not updated until the associated PDU 50 is transmitted, or sent to the layer 1 interface. This can lead to difficulties in conformance testing.